package com.woniu.util;

import java.time.Instant;
import java.util.Date;
import java.util.Map;

public class ParseDateUtil {
    public static Date parseDate(Map<String, Object> map, String key) {
        if (!map.containsKey(key)) {
            return null; // 不存在该字段，不修改
        }

        String dateStr = (String) map.get(key);
        if (dateStr == null || dateStr.trim().isEmpty()) {
            return null; // 空字符串，不修改
        }

        try {
            // 处理 ISO 8601 格式，例如 "2025-02-20T16:00:00.000Z"
            if (dateStr.contains("T") && dateStr.contains("Z")) {
                return Date.from(Instant.parse(dateStr));
            }
            // 处理 yyyy-MM-dd 格式
            else if (dateStr.length() == 10) {
                return Date.from(java.time.LocalDate.parse(dateStr, java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"))
                        .atStartOfDay(java.time.ZoneId.systemDefault()).toInstant());
            }
            // 处理 yyyy-MM-dd HH:mm:ss 格式
            else {
                return Date.from(java.time.LocalDateTime.parse(dateStr, java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
                        .atZone(java.time.ZoneId.systemDefault()).toInstant());
            }
        } catch (Exception e) {
            e.printStackTrace(); // 记录错误，避免程序崩溃
            return null;
        }
    }
}
